home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- '''
- Helper Module for Locale settings
-
- This module is based on a ROX module (LGPL):
-
- http://cvs.sourceforge.net/viewcvs.py/rox/ROX-Lib2/python/rox/i18n.py?rev=1.3&view=log
- '''
- import os
- from locale import normalize
- regex = '(\\[([a-zA-Z]+)(_[a-zA-Z]+)?(\\.[a-zA-Z\\-0-9]+)?(@[a-zA-Z]+)?\\])?'
-
- def _expand_lang(locale):
- locale = normalize(locale)
- COMPONENT_CODESET = 1
- COMPONENT_MODIFIER = 2
- COMPONENT_TERRITORY = 4
- mask = 0
- pos = locale.find('@')
- if pos >= 0:
- modifier = locale[pos:]
- locale = locale[:pos]
- mask |= COMPONENT_MODIFIER
- else:
- modifier = ''
- pos = locale.find('.')
- codeset = ''
- if pos >= 0:
- locale = locale[:pos]
-
- pos = locale.find('_')
- if pos >= 0:
- territory = locale[pos:]
- locale = locale[:pos]
- mask |= COMPONENT_TERRITORY
- else:
- territory = ''
- language = locale
- ret = []
- for i in range(mask + 1):
- if not i & ~mask:
- val = language
- if i & COMPONENT_TERRITORY:
- val += territory
-
- if i & COMPONENT_CODESET:
- val += codeset
-
- if i & COMPONENT_MODIFIER:
- val += modifier
-
- ret.append(val)
- continue
-
- ret.reverse()
- return ret
-
-
- def expand_languages(languages = None):
- if languages is None:
- languages = []
- for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'):
- val = os.environ.get(envar)
- if val:
- languages = val.split(':')
- break
- continue
-
-
- nelangs = []
- for lang in languages:
- for nelang in _expand_lang(lang):
- if nelang not in nelangs:
- nelangs.append(nelang)
- continue
-
-
- return nelangs
-
-
- def update(language = None):
- global langs, langs
- if language:
- langs = expand_languages([
- language])
- else:
- langs = expand_languages()
-
- langs = []
- update()
-